/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.pbs.daos;

import br.com.pbs.exeptions.BancoExeption;
import br.com.pbs.factory.Factory;
import br.com.pbs.interfaces.IEnderecoDao;
import br.com.pbs.interfaces.IFactoryPessoa;
import br.com.pbs.interfaces.IPessoaDao;
import br.com.pbs.pojos.Aluno;
import br.com.pbs.pojos.Endereco;
import br.com.pbs.pojos.Pessoa;
import br.com.pbs.pojos.Responsavel;
import java.util.List;

/**
 *
 * @author Luiz Segundo
 */
public class AlunoDao extends PessoaDao {

    public Pessoa verifica(Aluno valida) throws BancoExeption {
        IFactoryPessoa fabrica = new Factory();
        if (valida.getPessoa() != null) {
            try {
                IPessoaDao daoR = fabrica.getResponsavelDao();
                IEnderecoDao endereco = fabrica.getEnderecoDao();
                Responsavel r = (Responsavel) daoR.buscaObjetoPorNome(valida.getPessoa().getNome(), new Responsavel());
                List<Endereco> e = null;
                if (valida.getEnderecos() != null) {
                    e = endereco.buscaPorAtributoString("rua", valida.getEnderecos().getRua(), new Endereco());
                    if (e == null && !e.get(1).equals(valida.getEnderecos())) {
                        endereco.save(valida.getEnderecos());
                    }
                }
                if (r == null && valida.getPessoa() != null) {
                    daoR.save(valida.getPessoa());
                    r = (Responsavel) daoR.buscaObjetoPorNome(valida.getPessoa().getNome(), new Responsavel());
                    valida.setPessoa(r);
                }
            } catch (BancoExeption ex) {
                throw ex;
            }
        }
        return valida;
    }
}
